<template>
    <div id="userManagePage">
        <!-- 搜索表单 -->
        <a-form layout="inline" :model="searchParams" @finish="doSearch">
            <a-form-item label="账号">
                <a-input v-model:value="searchParams.userAccount" placeholder="输入账号" />
            </a-form-item>
            <a-form-item label="用户名">
                <a-input v-model:value="searchParams.userName" placeholder="输入用户名" />
            </a-form-item>
            <a-form-item>
                <a-button type="primary" html-type="submit">搜索</a-button>
            </a-form-item>
        </a-form>
        <a-divider />
        <!-- 表格 -->
    </div>

    <a-table :columns="columns" :data-source="data" :pagination="pagination" @change="doTableChange">
        <template #bodyCell="{ column, record }">
            <template v-if="column.dataIndex === 'userAvatar'">
                <a-image :src="record.userAvatar" :width="120" />
            </template>
            <template v-else-if="column.dataIndex === 'userRole'">
                <div v-if="record.userRole === 'admin'">
                    <a-tag color="green">管理员</a-tag>
                </div>
                <div v-else>
                    <a-tag color="blue">普通用户</a-tag>
                </div>
            </template>
            <template v-else-if="column.dataIndex === 'createTime'">
                {{ record.createTime ? dayjs(record.createTime).format('YYYY-MM-DD HH:mm:ss') : '' }}
            </template>
            <template v-else-if="column.key === 'action'">
                <a-button danger @click="doDelete(record.id)">删除</a-button>
            </template>
        </template>
    </a-table>
</template>
<script lang="ts" setup>
import { SmileOutlined, DownOutlined } from '@ant-design/icons-vue';
import { listUserVoByPage, deleteUser } from '@/api/userController'
// API 命名空间已在 typings.d.ts 中全局定义
import { message } from 'ant-design-vue';
import { onMounted, ref, reactive, computed } from 'vue'
import dayjs from 'dayjs';
const columns = [
    {
        title: 'id',
        dataIndex: 'id',
    },
    {
        title: '账号',
        dataIndex: 'userAccount',
    },
    {
        title: '用户名',
        dataIndex: 'userName',
    },
    {
        title: '头像',
        dataIndex: 'userAvatar',
    },
    {
        title: '简介',
        dataIndex: 'userProfile',
    },
    {
        title: '用户角色',
        dataIndex: 'userRole',
    },
    {
        title: '创建时间',
        dataIndex: 'createTime',
    },
    {
        title: '操作',
        key: 'action',
    },
]
// 数据
const data = ref<any[]>([])
const total = ref(0)

// 搜索条件
const searchParams = reactive<API.UserQueryRequest>({
    pageNum: 1,
    pageSize: 10,
})

// 获取数据
const fetchData = async () => {
    const res = await listUserVoByPage({
        ...searchParams,
    })
    if (res.data.data) {
        data.value = res.data.data.records ?? []
        total.value = res.data.data.totalRow ?? 0
    } else {
        message.error('获取数据失败，' + res.data.message)
    }
}

// 分页参数
const pagination = computed(() => {
    return {
        current: searchParams.pageNum ?? 1,
        pageSize: searchParams.pageSize ?? 10,
        total: total.value,
        showSizeChanger: true,
        showTotal: (total: number) => `共 ${total} 条`,
    }
})

// 表格变化处理
const doTableChange = (page: any) => {
    searchParams.pageNum = page.current
    searchParams.pageSize = page.pageSize
    fetchData()
}

// 获取数据
const doSearch = () => {
    // 重置页码
    searchParams.pageNum = 1
    fetchData()
}
// 删除数据
const doDelete = async (id: number) => {
    if (!id) {
        return
    }
    console.log("id：" + id)
    const res = await deleteUser({ 'id': id })
    if (res.data.code === 0) {
        message.success('删除成功')
        // 刷新数据
        fetchData()
    } else {
        message.error('删除失败')
    }
}

// 页面加载时请求一次
onMounted(() => {
    fetchData()
})

</script>
<style scoped>
#userManagePage {
    width: 100%;
    padding: 24px;
}
</style>
